HAL SPI callbacks register/unregister functions

This section provides information about the HAL SPI callbacks register/unregister functions migration.

Callbacks register functions

In HAL1, the function HAL_SPI_RegisterCallback is used to register various SPI callbacks through a single function with a specific callback ID, whereas, in HAL2, distinct functions are available to register each specific SPI callback.

HAL 1

HAL 2

SPI Tx Completed callback

HAL_SPI_RegisterCallback(&hspi,
                         HAL_SPI_TX_COMPLETE_CB_ID,
                         USER_SPI_TxCpltCallback);
HAL_SPI_RegisterTxCpltCallback(&hspi,
                               USER_SPI_TxCpltCallback);

SPI Rx Completed callback

HAL_SPI_RegisterCallback(&hspi,
                         HAL_SPI_RX_COMPLETE_CB_ID,
                         USER_SPI_RxCpltCallback);
HAL_SPI_RegisterRxCpltCallback(&hspi,
                               USER_SPI_RxCpltCallback);

SPI TxRx Completed callback

HAL_SPI_RegisterCallback(&hspi,
                         HAL_SPI_TX_RX_COMPLETE_CB_ID,
                         USER_SPI_TxRxCpltCallback);
HAL_SPI_RegisterTxRxCpltCallback(&hspi,
                                 USER_SPI_TxRxCpltCallback);

SPI Tx Half Completed callback

HAL_SPI_RegisterCallback(&hspi,
                         HAL_SPI_TX_HALF_COMPLETE_CB_ID,
                         USER_SPI_TxHalfCpltCallback);
HAL_SPI_RegisterTxHalfCpltCallback(&hspi,
                                   USER_SPI_TxHalfCpltCallback);

SPI Rx Half Completed callback

HAL_SPI_RegisterCallback(&hspi,
                         HAL_SPI_RX_HALF_COMPLETE_CB_ID,
                         USER_SPI_RxHalfCpltCallback);
HAL_SPI_RegisterRxHalfCpltCallback(&hspi,
                                   USER_SPI_RxHalfCpltCallback);

SPI TxRx Half Completed callback

HAL_SPI_RegisterCallback(&hspi,
                         HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID,
                         USER_SPI_TxRxHalfCpltCallback);
HAL_SPI_RegisterTxRxHalfCpltCallback(&hspi,
                                     USER_SPI_TxRxHalfCpltCallback);

SPI error callback

HAL_SPI_RegisterCallback(&hspi,
                         HAL_SPI_ERROR_CB_ID,
                         USER_SPI_ErrorCallback);
HAL_SPI_RegisterErrorCallback(&hspi,
                              USER_SPI_TxRxHalfCpltCallback);

SPI abort callback

HAL_SPI_RegisterCallback(&hspi,
                         HAL_SPI_ABORT_CB_ID,
                         USER_SPI_AbortCpltCallback);
HAL_SPI_RegisterAbortCpltCallback(&hspi,
                                  USER_SPI_TxRxHalfCpltCallback);

SPI suspend callback

HAL_SPI_RegisterCallback(&hspi,
                         HAL_SPI_SUSPEND_CB_ID,
                         USER_SPI_SuspendCallback);
HAL_SPI_RegisterSuspendCallback(&hspi,
                                USER_SPI_TxRxHalfCpltCallback);

Related concept Individual callback registration APIs replace global register and unregister functions


Callbacks unregister functions

In HAL2, the unregister callback API has been removed. Instead, callbacks can be managed by re-registering the default HAL SPI weak callbacks as needed.

HAL 1

HAL 2

SPI Tx Completed callback

HAL_SPI_UnRegisterCallback(&hspi,
                           HAL_SPI_TX_COMPLETE_CB_ID);
HAL_SPI_RegisterTxCpltCallback(&hspi,
                               HAL_SPI_TxCpltCallback);

SPI Rx Completed callback

HAL_SPI_UnRegisterCallback(&hspi,
                           HAL_SPI_RX_COMPLETE_CB_ID);
HAL_SPI_RegisterRxCpltCallback(&hspi,
                               HAL_SPI_RxCpltCallback);

SPI TxRx Completed callback

HAL_SPI_UnRegisterCallback(&hspi,
                           HAL_SPI_TX_RX_COMPLETE_CB_ID);
HAL_SPI_RegisterTxRxCpltCallback(&hspi,
                                 HAL_SPI_TxRxCpltCallback);

SPI Tx Half Completed callback

HAL_SPI_UnRegisterCallback(&hspi,
                           HAL_SPI_TX_HALF_COMPLETE_CB_ID);
HAL_SPI_RegisterTxHalfCpltCallback(&hspi,
                                   HAL_SPI_TxHalfCpltCallback);

SPI Rx Half Completed callback

HAL_SPI_UnRegisterCallback(&hspi,
                           HAL_SPI_RX_HALF_COMPLETE_CB_ID);
HAL_SPI_RegisterRxHalfCpltCallback(&hspi,
                                   HAL_SPI_RxHalfCpltCallback);

SPI TxRx Half Completed callback

HAL_SPI_UnRegisterCallback(&hspi,
                           HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID);
HAL_SPI_RegisterTxRxHalfCpltCallback(&hspi,
                                     HAL_SPI_TxRxHalfCpltCallback);

SPI error callback

HAL_SPI_UnRegisterCallback(&hspi,
                           HAL_SPI_ERROR_CB_ID);
HAL_SPI_RegisterErrorCallback(&hspi,
                              HAL_SPI_TxRxHalfCpltCallback);

SPI abort callback

HAL_SPI_UnRegisterCallback(&hspi,
                           HAL_SPI_ABORT_CB_ID);
HAL_SPI_RegisterAbortCpltCallback(&hspi,
                                  HAL_SPI_TxRxHalfCpltCallback);

SPI suspend callback

HAL_SPI_UnRegisterCallback(&hspi,
                           HAL_SPI_SUSPEND_CB_ID);
HAL_SPI_RegisterSuspendCallback(&hspi,
                                HAL_SPI_TxRxHalfCpltCallback);

Related concept Individual callback registration APIs replace global register and unregister functions